package com.dong.ListNode.arithemtic;
/**
 * 题意：删除链表中等于给定值 val 的所有节点。
 *  示例 1：
 *  输入：head = [1,2,6,3,4,5,6], val = 6
 *  输出：[1,2,3,4,5]
 */

import java.util.HashMap;
import java.util.List;

class ListNode {
    //节点值
    int val;
    //下一个节点
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
public class ListNodeDemo1 {
    public ListNode removeElements(ListNode head, int val) {
        //虚拟头结点
        ListNode dummyHead = new ListNode(0);
        //虚拟头节点下个节点指向头结点
        dummyHead.next = head;
        ListNode temp = dummyHead;
        while (temp.next!=null){
            //如果下一个节点的值等于要移除的值
            if (temp.next.val==val){
                //则将指针指向下下个节点
                temp.next = temp.next.next;
            }
            else {
                //移动向下一个节点
                temp = temp.next;
            }
        }
        //最后的头节点就是虚拟节点的下一个节点
        return dummyHead.next;
    }

}
